iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0
Security

規組駭了了::你無定落勾去的鑠奅 Web Hacking 步數系列 第 1

0x01 / HTTP.予咱一切的基礎崩·去.Smuggling

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250918/201201872G9nVwoTHW.png

Web hacking 的基礎文已經是蓋濟矣,咱佇遮的文會當做逐家已經攏有遐的基礎智識(HTTP、frontend、backend、injection etc.),若是講你是初學者,遮的文無定就較無適合你看,會當先去 splitline/How-to-Hack-Websites(華,繁)做伙補充一下智識!

逐年 Portswigger 攏有出 Top 10 web hacking techniques,聽起來毋但鑠奅閣誠重要,毋過咱敢逐个攏共伊看予齊透矣?閣毋但彼爾爾,逐冬攏有幾若个 conference 咧發表,逐禮拜攏有 CTF 選手咧舞新撇步,閣免講逐工獎金獵人攏有新的成果——欸,恁敢攏有咧綴?

我佇遮就是想欲來參逐家逐工來分享恁無定落勾去,抑是單純因為貧惰無去看的奇巧 Web 攻擊相關的新招、舊招——啊我家己嘛無一定每一个攏看過,嘛算是予家己來罔補一下。

欸,啥物是 Web hacking?

咱這擺是欲講 Web hacking 無毋著——毋過,有一个上大的問題是,逐家認為啥物款的攻擊才會當算做是「Web hacking」咧?

著啦,毋免閣講咱攏已經知影 Web hacking 有啥物 command injection、XSS、SSRF 遐橐個束個已經夆講甲喙角專泡的招數,雖然攏會得算是 Web hacking 無錯,毋過彼敢干焦會發生佇咧 Web?其實除了 XSS 彼款是誠實倚 Web 前端彼層咧行的,其他咱若共伊想予斟酌——其實嘛無絕對啦乎。Emm,若按呢咱有一个上重要的元素是啥——好,咱來問一个仔 Gemini 予伊共咱說分明……

Q. 借問,具體來講啥物款兮攻擊會當共伊算做是 Web hacking? 技術彼層愛有啥款兮元素?
https://ithelp.ithome.com.tw/upload/images/20250915/201201874Gqk7Jpk52.png

著啦,就是 HTTP!若有經過 HTTP 彼層,毋管按怎,咱攏愛加減共伊罔算做是 Web 矣 :P 咱若是會當佇 HTTP 的彼層揣著處理理路走精去、出重耽的所在,咱毋但當算做是揣著一个正港的「Web hacking attack surface」,嘛有機會佇較大範圍造成傷害。

總·是,HTTP 就是咱 Web 一切的基礎,就算咧教 Web hacking 嘛定定是對遐開始,所以咱這擺嘛綴咧對遮開始講起!

HTTP Related Attacks

其實這幾冬 PortSwigger 的 Top 10 web hacking techniques,逐年攏有出現 HTTP 相關的漏縫、攻擊,下跤是這幾冬佮 HTTP 本體相關的招數:

2024

2023

2022

2021

好——按呢已經足濟,講袂了矣。

咱會發現,遮的 HTTP web hacking 招數,足大的部份攏是參 HTTP smuggleing 有牽磕的,這一切的起因,咱凡勢愛對 2019
James Kettle 這位 sia̋n-pái 的 HTTP Desync Attacks: Request Smuggling Reborn 講起。

正是因為這篇研究,才予 request smuggling 閣再予世人注意著,閣再成做現代時行的 web hacking 招數的。雖然自伊發表到 tsín 已經過欲了五、六冬去矣,毋過若佮其他傳統的 tricks 相比,應該原仔是有足濟人猶袂去共伊斟酌去理解的——所以,咱佇這个系列的頭一篇,就先來紹介一个仔這个現代 Request Smuggling 的起頭,予逐家罔知影一寡 request smuggling 的基礎!

HTTP Desync Attacks

HTTP Request Smuggling 是啥物?

這馬的網站,通常攏會用一組以上的 server 來處理使用者的請求。頭前會有一台前端 server,親像 load balancer抑是反向代理(reverse proxy),了後才閣有「後端伺服器」(back-end server)咧處理真正的執行理路。

為著效率,前端會共真濟無仝的使用者請求,透過仝一條網路連線,一包一包連紲送去到後端。問題就出佇遮:前端佮後端伺服器,愛對「第一包請求佇佗位結束、第二包對佗位開始」有仝款的想法。若無,攻擊者就有法度送出一个「定義無清楚」的請求,予前端佮後端產生無同的解讀。

簡單講,攻擊者會當共一个惡意的請求「走私」搢去入一个正常的請求內底。前端遐看起來,伊講感覺這是仝一个請求;毋過後端咧處理的時,煞共這个偷渡的部份,當做是後一个使用者的請求的頭。按呢,攻擊者就有才調影響、甚至直接控制著別个使用者的操作。

這个問題的根本是因為 HTTP/1.1 RFC 內底,用兩款無仝的 header 來定義請求的長短:一个是 Content-Length(CL),閣一个是 Transfer-Encoding(TE)。按呢,咱就來看這會造成啥款的問題。

CL.TE 攻擊

這个「CL.TE」的意思是:Content-Length vs. Transfer-Encoding。

  • 前端:干焦看 Content-Length
  • 後端:干焦看 Transfer-Encoding

攻擊的時,會送出一个像按呢的請求:

POST / HTTP/1.1
Host: vulnerable-website.com
Content-Length: 13
Transfer-Encoding: chunked

0

SMUGGLED
  1. 前端遐看著 Content-Length: 13,伊就認為這个請求的內容有 13 个 bytes 遐爾仔長,也就是算到 SMUGGLED 為止。對伊來講,這規个攏是正常的請求,所以就就按呢直接轉送去入後端。
  2. 後端無咧插 Content-Length,伊干焦看 Transfer-Encoding: chunked。照這个規則,伊會開始處理一段一段的資料(chunk)。伊讀著第一个 chunk 的長度是 0,就代表這个請求已經結束矣。
  3. 結果,後壁彼段 SMUGGLED 的資料就留落來,袂去處理。後端會共這段資料,當做是後一个入來的請求的頭。

https://ithelp.ithome.com.tw/upload/images/20250915/20120187o2pgiSi1qg.png

TE.CL 攻擊

這个「TE.CL」的意思是:Transfer-Encoding vs. Content-Length。

  • 前端:干焦看 Transfer-Encoding
  • 後端:干焦看 Content-Length

攻擊的時,會送出一个像按呢的請求:

POST / HTTP/1.1
Host: vulnerable-website.com
Content-Length: 3
Transfer-Encoding: chunked

8
SMUGGLED
0

  1. 前端看著 Transfer-Encoding: chunked,伊就知影愛用 chunk 的方式來讀。伊讀著第一个 chunk 有 8 个位元組長(也就是 SMUGGLED),閣讀著第二个 chunk 是 0,代表請求結束。規个請求對伊來講攏合法,就轉送到後端。
  2. 後端煞顛倒爿,伊只看 Content-Length: 3,認為這个請求的內容干焦 3 个 bytes 長。所以伊干焦讀到 8 後壁的換逝號就煞。
  3. 結果,SMUGGLED 佮後壁的資料,就攏予後端當做是後一个請求的內容。

TE.TE 攻擊

這个「TE.TE」的意思是:前後端攏支援 Transfer-Encoding,毋過會當想辦法予其中一台「看毋捌」這个頭。

這招是利用無仝 server 對 HTTP 規格的實作無完全仝款,會當接受一寡仔無標準的寫法。攻擊者會當刁工共 Transfer-Encoding 標頭寫了較奇怪,譬論講:

  • Transfer-Encoding: xchunked
  • Transfer-Encoding : chunked (注意冒號後壁的空白)
  • Transfer-Encoding:[tab]chunked (用 tab 字元)

這个攻擊的目標是揣出一个「變體」的標頭,會予一台 server(譬論講前端)當做是正常的 Transfer-Encoding 來處理,毋過別台(譬論講後端)煞因為看無這个奇怪的寫法,就直接共伊擲掉,轉去看 Content-Length

若揣著這款變體,是後端共 TE 標頭落勾去,這个攻擊就會變作親像 TE.CL 彼款;若顛倒爿,是予前端落勾去,就會變作 CL.TE 彼款攻擊。


以上,就是基礎 HTTP smuggling 的介紹。其實,論真講彼幾个攏是相𫝛的概念,攏是想空想縫揣一寡 header,予前後端欲解說 HTTP 資料的時有無仝款的想法。這款「無一致」的行為咱定定攏會佇 web hacking 內底看著,算是一个誠重要的觀念!

紲落來佇咱的後一篇文章,咱會來繼續討論著其他對這个招數湠生出來的佮 HTTP 有關係的新招。


下一篇
0x02 / HTTP/2.欲升級嘛升無路.Smuggling
系列文
規組駭了了::你無定落勾去的鑠奅 Web Hacking 步數3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言